The security of computing resources and associated data is of high importance in many contexts. As an example, organizations often utilize networks of computing devices to provide a robust set of services to their users. Networks often span multiple geographic boundaries and often connect with other networks. An organization, for example, may support its operations using both internal networks of computing resources and computing resources managed by others. Computers of the organization, for instance, may communicate with computers of other organizations to access and/or provide data while using services of another organization. In many instances, organizations configure and operate remote networks using hardware managed by other organizations, thereby reducing infrastructure costs and achieving other advantages. With such configurations of computing resources, ensuring that access to the resources and the data they hold is secure can be challenging, especially as the size and complexity of such configurations grow.
Many systems utilize various methods of authentication to ensure that requests made to the system should be fulfilled. Such techniques enable systems to verify that a requestor corresponds to an identity authorized to cause a request to be fulfilled. Conventional techniques, however, often focus on authentication of requests to a system without much regard to responses provided by the system. Some secure communication protocols, such as transport layer security (TSL) and secure sockets layer (SSL) allow for bidirectional authentication of communications, providing some assurances with respect to the validity of responses received from a system. However, the assurances provided by use of such protocols, to some, may be inadequate. Further, conventional techniques often do not provide the ability to prove that certain responses were received.